home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xsw / update_d.c < prev    next >
C/C++ Source or Header  |  1995-05-09  |  82KB  |  2,790 lines

  1. /*
  2.  *    @(#) update_d.c 11.2 94/02/08 SCOINC
  3.  */
  4. /***************************************************************************
  5.  *
  6.  *    Copyright (c) 1990-1993        The Santa Cruz Operation, Inc.
  7.  *
  8.  *    All rights reserved.  No part of this program or publication may be
  9.  *    reproduced, transmitted, transcribed, stored in a retrieval system,
  10.  *    or translated into any language or computer language, in any form or
  11.  *    by any means, electronic, mechanical, magnetic, optical, chemical,
  12.  *    biological, or otherwise, without the prior written permission of:
  13.  *
  14.  *        The Santa Cruz Operation , Inc.        (408) 425-7222
  15.  *        400 Encinal St., Santa Cruz, California 95060 USA
  16.  *
  17.  **************************************************************************/
  18. /*
  19.  * Modification History
  20.  *
  21.  * S004, 08-Feb-94, rickra
  22.  *    Moved some stuff from xsw.c to here...    
  23.  *
  24.  * S003, 24-Oct-93, rickra
  25.  *    Added 32v5 streams stuff.
  26.  *
  27.  * S002, 16-Sep-93, rickra
  28.  *    Added disk space stuff.
  29.  *    Fixed some little bugs....
  30.  *
  31.  * S001, 01-June-93, rickra
  32.  *    Removed a printf for debugging...
  33.  *
  34.  * S000, 27-May-93, rickra
  35.  *    Initial check in. Had to shrink file name so that it
  36.  *    would work with new SCCS interface!!!!
  37.  *
  38.  */
  39. /*+-------------------------------------------------------------------------
  40.     update_d.c - XSW CPU and wait percentage scale handler
  41.  
  42.   Defined functions:
  43.  
  44. --------------------------------------------------------------------------*/
  45.  
  46. #include "include/unixincs.h"
  47. #include <X11/Xlib.h>
  48. #include <X11/Xutil.h>
  49. #include <X11/IntrinsicP.h>
  50. #include <X11/Intrinsic.h>
  51. #include <X11/Shell.h>
  52. #include <X11/StringDefs.h>
  53. #include <X11/CoreP.h>
  54. #include <Xm/Xm.h>
  55.  
  56. #include "include/buttons.h"
  57. #include "include/resources.h"
  58. #include "include/xswboth.h"
  59. #include "include/scales.h"
  60. #include "include/xsw.h"
  61.  
  62. extern struct NetworkXswStruct *current_server;
  63. extern struct NetworkXswStruct *input_callback_current_server;
  64. extern struct NetworkXswStruct *toggle_button_current_server;
  65.  
  66. extern Widget   TOGGLE_BUTTONS_WIDGETS[Max_state_buttons];
  67.  
  68. extern int      ps_procs_to_display;
  69. extern int      got_key_event;
  70. extern int      inCommandLineOptionParse;
  71.  
  72.  
  73. int             current_Y_offset;
  74.  
  75. #define delta_msec(t,t0) ((( t.time * 1000L) +  t.millitm) - \
  76.                           ((t0.time * 1000L) + t0.millitm))
  77.  
  78.  
  79. /*================================================================== INT ===
  80. * save_last_reading 
  81. *
  82. * Called when the user specifies -help on the command line.
  83. *
  84. * Parameters:
  85. *    o server_pointer (I) - Pointer to the server to save last readings. 
  86. *
  87. * Algorithm:
  88. *    Use memcpy to save specific data structures. 
  89. *
  90. * Notes:
  91. *
  92. *---------------------------------------------------------------------------
  93. */
  94. void
  95. save_last_reading (server_pointer)
  96.  
  97.      struct NetworkXswStruct *server_pointer;
  98.  
  99. {
  100.  
  101.   (void) memcpy ((char *) server_pointer -> my_sysinfo_last, (char *) server_pointer -> my_sysinfo,
  102.          sizeof (struct sysinfo));
  103.  
  104.   (void) memcpy ((char *) server_pointer -> my_minfo_last, (char *) server_pointer -> my_minfo,
  105.          sizeof (struct minfo));
  106.  
  107.   (void) memcpy ((char *) server_pointer -> old_floppy_disk_stats, (char *) server_pointer -> floppy_disk_stats,
  108.          sizeof (server_pointer -> floppy_disk_stats));
  109.  
  110.   (void) memcpy ((char *) server_pointer -> old_Sdsk_stats, (char *) server_pointer -> Sdsk_stats,
  111.          sizeof (server_pointer -> Sdsk_stats));
  112.  
  113.   (void) memcpy ((char *) server_pointer -> old_Stp_stats, (char *) server_pointer -> Stp_stats,
  114.          sizeof (server_pointer -> Stp_stats));
  115.  
  116.   (void) memcpy ((char *) server_pointer -> old_Srom_stats, (char *) server_pointer -> Srom_stats,
  117.          sizeof (server_pointer -> Srom_stats));
  118.  
  119.   (void) memcpy ((char *) server_pointer -> old_esdi_disk_stats, (char *) server_pointer -> esdi_disk_stats,
  120.          sizeof (server_pointer -> esdi_disk_stats));
  121.  
  122.   (void) memcpy ((char *) server_pointer -> old_wd_disk_stats, (char *) server_pointer -> wd_disk_stats,
  123.          sizeof (server_pointer -> wd_disk_stats));
  124.  
  125.   (void) memcpy ((char *) server_pointer -> old_cart_tape_stats, (char *) server_pointer -> cart_tape_stats,
  126.          sizeof (server_pointer -> cart_tape_stats));
  127. }                /* End of save_last_reading */
  128.  
  129.  
  130. /*================================================================== INT ===
  131. * calc_cpu_avg(per_state) - add per_state array to avg array
  132. *
  133. * Add per_state to cpu_avg. 
  134. *
  135. * Algorithm:
  136. *
  137. * Notes:
  138. *
  139. *---------------------------------------------------------------------------
  140. */
  141. void
  142. calc_cpu_avg (per_state)
  143.      time_t          per_state[];
  144. {
  145.   register        itmp;
  146.  
  147.  
  148.   if (!current_server -> cpu_avg_init)
  149.     {
  150.       for (itmp = 0; itmp < CPU_AVG_MAX; itmp++)
  151.     (void) memcpy (current_server -> cpu_avg[itmp], per_state, sizeof (time_t) * 5);
  152.       current_server -> cpu_avg_init = 1;
  153.     }
  154.   else
  155.     {
  156.       for (itmp = 0; itmp < CPU_AVG_MAX - 1; itmp++)
  157.     (void) memcpy (current_server -> cpu_avg[itmp], current_server -> cpu_avg[itmp + 1], sizeof (time_t) * 5);
  158.  
  159.       (void) memcpy (current_server -> cpu_avg[itmp], per_state, sizeof (time_t) * 5);
  160.     }
  161.  
  162. }                /* end of calc_cpu_avg */
  163.  
  164. /*================================================================== INT ===
  165. * calc_cpu_avg(per_state) - add per_state array to avg array
  166. *
  167. * Add per_state to cpu_avg.
  168. *
  169. * Parameters:
  170. *    o cpu_ticks     (I) - cpu times
  171. *    o period     (I) - 
  172. *
  173. * Algorithm:
  174. *
  175. * Notes:
  176. *
  177. *---------------------------------------------------------------------------
  178. */
  179. void
  180. get_cpu_avg (cpu_ticks, period)
  181.      time_t          cpu_ticks[];
  182.      int             period;
  183. {
  184.   register        iperiod = CPU_AVG_MAX;
  185.   register        istate;
  186.   register        count = period;
  187.  
  188.  
  189.   for (istate = 0; istate < 5; istate++)
  190.     {
  191.       current_server -> cpu_ticks[istate] = 0;
  192.     }
  193.  
  194.   while (count--)
  195.     {
  196.       iperiod--;
  197.       for (istate = 0; istate < 5; istate++)
  198.     current_server -> cpu_ticks[istate] += (current_server -> cpu_avg[iperiod])[istate];
  199.     }
  200.  
  201.   for (istate = 0; istate < 5; istate++)
  202.     {
  203.       current_server -> cpu_ticks[istate] /= period;
  204.     }
  205.  
  206.  
  207. }                /* end of get_cpu_avg */
  208.  
  209. /*+-------------------------------------------------------------------------
  210.         calc_wait_avg(per_state) - add per_state array to avg array
  211. --------------------------------------------------------------------------*/
  212. void
  213. calc_wait_avg (per_state)
  214.      time_t          per_state[];
  215. {
  216.   register        itmp;
  217.  
  218.   if (!current_server -> wait_avg_init)
  219.     {
  220.       for (itmp = 0; itmp < WAIT_AVG_MAX; itmp++)
  221.     (void) memcpy (current_server -> wait_avg[itmp], per_state, sizeof (time_t) * 3);
  222.       current_server -> wait_avg_init = 1;
  223.     }
  224.   else
  225.     {
  226.       for (itmp = 0; itmp < WAIT_AVG_MAX - 1; itmp++)
  227.     (void) memcpy (current_server -> wait_avg[itmp], current_server -> wait_avg[itmp + 1], sizeof (time_t) * 3);
  228.       (void) memcpy (current_server -> wait_avg[itmp], per_state, sizeof (time_t) * 3);
  229.     }
  230.  
  231. }                /* end of calc_wait_avg */
  232.  
  233. /*+-------------------------------------------------------------------------
  234.         get_wait_avg(wait_ticks,period)
  235. --------------------------------------------------------------------------*/
  236. void
  237. get_wait_avg (wait_ticks, period)
  238.      time_t          wait_ticks[];
  239.      int             period;
  240. {
  241.   register        iperiod = WAIT_AVG_MAX;
  242.   register        istate;
  243.   register        count = period;
  244.  
  245.   for (istate = 0; istate < 3; istate++)
  246.     current_server -> wait_ticks[istate] = 0;
  247.  
  248.   while (count--)
  249.     {
  250.       iperiod--;
  251.       for (istate = 0; istate < 3; istate++)
  252.     {
  253.       current_server -> wait_ticks[istate] += (current_server -> wait_avg[iperiod])[istate];
  254.     }
  255.     }
  256.  
  257.   for (istate = 0; istate < 3; istate++)
  258.     current_server -> wait_ticks[istate] /= period;
  259.  
  260. }                /* end of get_wait_avg */
  261.  
  262.  
  263.  
  264. /*+-------------------------------------------------------------------------
  265.         draw_lower_main_statics(Y_offset)
  266. --------------------------------------------------------------------------*/
  267. void
  268. draw_lower_main_statics (SP)
  269.      struct NetworkXswStruct *SP;
  270.  
  271. {
  272.   int             Y_offset = 0;
  273.   int             last_var_y_offset = 0;
  274.   int             last_bootinfo_y_offset = 0;
  275.   int             last_tune_y_offset = 0;
  276.   int             max = 0;
  277.  
  278. #ifdef DEBUG1
  279.   fprintf (stdout, "in draw_lower_main_statics\n");
  280. #endif
  281.  
  282.   last_var_y_offset = draw_Var (SP, Var_TLX, Y_offset);
  283.   last_bootinfo_y_offset = draw_Bootinfo (SP, Bootinfo_TLX, Y_offset);
  284.  
  285.   if (last_var_y_offset > last_bootinfo_y_offset)
  286.     max = last_var_y_offset;
  287.   else
  288.     max = last_bootinfo_y_offset;
  289.  
  290.   last_tune_y_offset = draw_Tune (SP, Tune_TLX, Y_offset);
  291.  
  292.   if (last_tune_y_offset > max)
  293.     max = last_tune_y_offset;
  294.  
  295. /*
  296.   max = (6 + SP -> my_bootinfo -> memavailcnt +
  297.         SP -> my_bootinfo -> memusedcnt ) * FHEIGHT;
  298. */
  299.  
  300.   draw_MiscVBT (SP, 0, max);
  301.  
  302. #ifdef DEBUG1
  303.   fprintf (stdout, "leaving draw_lower_main_statics\n");
  304. #endif
  305. }                /* end of draw_lower_main_statics */
  306.  
  307.  
  308.  
  309.  
  310. /*+-------------------------------------------------------------------------
  311.         update_screen()
  312. --------------------------------------------------------------------------*/
  313. void
  314. update_screen (sep_window, data_updated)
  315.      Window          sep_window;
  316.      int             data_updated;
  317.  
  318. {
  319.   register        i = 0;
  320.   time_t          total_ticks;
  321.   int             itmp;
  322.  
  323.   static int      first_cpu_call = 1;
  324.   static int      first_wait_call = 1;
  325.  
  326. /*
  327.    The only time sep_window should be > 0, is if we are called from an
  328.    expose callback.
  329. */
  330.  
  331. /*
  332. */
  333.  
  334.   if (sep_window > 0)
  335.     {
  336.  
  337.  
  338. /*
  339.   Get cpu_ticks
  340. */
  341.  
  342.  
  343.       for (itmp = 0; itmp < 5; itmp++)
  344.     {
  345.       if (itmp != CPU_WAIT)
  346.         current_server -> cpu_ticks[itmp] = sysidelta (cpu[itmp]);
  347.     }
  348.       current_server -> cpu_ticks[CPU_WAIT] = 0;
  349.       for (itmp = 0; itmp < 3; itmp++)
  350.     current_server -> cpu_ticks[CPU_WAIT] += (current_server -> wait_ticks[itmp] = sysidelta (wait[itmp]));
  351.  
  352.     }
  353.  
  354.  
  355.   update_Users (current_server);
  356.  
  357.   if (sep_window > 0)
  358.     {
  359.  
  360.       if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].window)
  361.     {
  362.  
  363.       total_ticks = update_CpuScale (current_server,
  364.                      0,
  365.                      (FHEIGHT * 1),
  366.                      current_server -> cpu_ticks);
  367.  
  368. /*
  369.   Get cpu_ticks, DO NOT RECALCULATE averages, unless it is the first time
  370.   thru here. If it is the first time thru here, lets averge so that we
  371.   inititialize the average data structures. Remember, if we are in
  372.   this part of the code, it is only a refresh of the window...
  373. */
  374.       if (first_cpu_call)
  375.         {
  376.           calc_cpu_avg (current_server -> cpu_ticks);
  377.           first_cpu_call = 0;
  378.         }
  379.       get_cpu_avg (current_server -> cpu_ticks, 5);
  380.  
  381.       total_ticks = update_CpuScale (current_server,
  382.                      0,
  383.                      (FHEIGHT * 2),
  384.                      current_server -> cpu_ticks);
  385.  
  386.  
  387.       get_cpu_avg (current_server -> cpu_ticks, 10);
  388.  
  389.  
  390.       total_ticks = update_CpuScale (current_server,
  391.                      0,
  392.                      (FHEIGHT * 3),
  393.                      current_server -> cpu_ticks);
  394.  
  395. /*
  396.  * Should now update the window with the pixmap....
  397.  */
  398.  
  399.       XCopyArea (
  400.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].display,
  401.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].pixmap,
  402.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].window,
  403.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].gc, 0, 0,
  404.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].width,
  405.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].height,
  406.               0, 0);
  407.  
  408.  
  409.  
  410.  
  411.  
  412.     }
  413.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].window)
  414.     {
  415.  
  416.       total_ticks = current_server -> cpu_ticks[CPU_IDLE] + current_server -> cpu_ticks[CPU_WAIT] +
  417.         current_server -> cpu_ticks[CPU_SXBRK] + current_server -> cpu_ticks[CPU_KERNEL] +
  418.         current_server -> cpu_ticks[CPU_USER];
  419.  
  420.  
  421.       update_WaitScale (current_server, 0, (FHEIGHT * 1), total_ticks);
  422. /*
  423.   Get wait_ticks, DO NOT RECALCULATE averages, unless it is the first time
  424.   thru here. If it is the first time thru here, lets averge so that we
  425.   inititialize the average data structures. Remember, if we are in
  426.   this part of the code, it is only a refresh of the window...
  427. */
  428.  
  429.       if (first_wait_call)
  430.         {
  431.           calc_wait_avg (current_server -> wait_ticks);
  432.           first_wait_call = 0;
  433.         }
  434.  
  435.  
  436.       get_cpu_avg (current_server -> cpu_ticks, 5);
  437.       total_ticks = current_server -> cpu_ticks[CPU_IDLE] + current_server -> cpu_ticks[CPU_WAIT] +
  438.         current_server -> cpu_ticks[CPU_SXBRK] + current_server -> cpu_ticks[CPU_KERNEL] +
  439.         current_server -> cpu_ticks[CPU_USER];
  440.  
  441.       get_wait_avg (current_server -> wait_ticks, 5);
  442.  
  443.       update_WaitScale (current_server, 0, (FHEIGHT * 2), total_ticks);
  444.  
  445.       get_cpu_avg (current_server -> cpu_ticks, 10);
  446.       total_ticks = current_server -> cpu_ticks[CPU_IDLE] + current_server -> cpu_ticks[CPU_WAIT] +
  447.         current_server -> cpu_ticks[CPU_SXBRK] + current_server -> cpu_ticks[CPU_KERNEL] +
  448.         current_server -> cpu_ticks[CPU_USER];
  449.  
  450.       get_wait_avg (current_server -> wait_ticks, 10);
  451.  
  452.       update_WaitScale (current_server, 0, (FHEIGHT * 3), total_ticks);
  453.  
  454.       XCopyArea (
  455.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].display,
  456.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].pixmap,
  457.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].window,
  458.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].gc, 0, 0,
  459.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].width,
  460.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].height,
  461.               0, 0);
  462.     }
  463.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].window)
  464.     {
  465.       update_MemScale (current_server);
  466.       XCopyArea (
  467.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].display,
  468.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].pixmap,
  469.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].window,
  470.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].gc, 0, 0,
  471.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].width,
  472.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].height,
  473.               0, 0);
  474.  
  475.  
  476.     }
  477.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].window)
  478.     {
  479.       update_FilesScale (current_server);
  480.  
  481.       XCopyArea (
  482.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].display,
  483.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].pixmap,
  484.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].window,
  485.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].gc, 0, 0,
  486.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].width,
  487.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].height,
  488.               0, 0);
  489.  
  490.  
  491.     }
  492.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].window)
  493.     {
  494.       update_CacheScale (current_server);
  495.       XCopyArea (
  496.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].display,
  497.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].pixmap,
  498.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].window,
  499.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].gc, 0, 0,
  500.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].width,
  501.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].height,
  502.               0, 0);
  503.  
  504.     }
  505.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].window)
  506.     {
  507.       update_streams (current_server);
  508.       XCopyArea (
  509.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].display,
  510.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].pixmap,
  511.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].window,
  512.        current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].gc, 0, 0,
  513.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].width,
  514.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].height,
  515.               0, 0);
  516.  
  517.  
  518.     }
  519.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].window)
  520.     {
  521.       update_dev_stats (current_server);
  522.       XCopyArea (
  523.       current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].display,
  524.        current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].pixmap,
  525.        current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].window,
  526.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].gc,
  527.               0,
  528.               0,
  529.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].width,
  530.        current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].height,
  531.               0, 0);
  532.  
  533.  
  534.     }
  535.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].window)
  536.     {
  537.       update_disk_space (current_server);
  538.       XCopyArea (
  539.       current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].display,
  540.       current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].pixmap,
  541.       current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].window,
  542.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].gc,
  543.               0,
  544.               0,
  545.               current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].draw_width,
  546.               current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].draw_height,
  547.               0, 0);
  548.  
  549.     }
  550.  
  551.  
  552.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].window)
  553.     {
  554.       update_Sysinfo (current_server);
  555.       XCopyArea (
  556.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].display,
  557.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].pixmap,
  558.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].window,
  559.        current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].gc, 0, 0,
  560.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].width,
  561.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].height,
  562.               0, 0);
  563.  
  564.     }
  565.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].window)
  566.     {
  567.       update_nfsstat (current_server);
  568.       XCopyArea (
  569.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].display,
  570.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].pixmap,
  571.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].window,
  572.        current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].gc, 0, 0,
  573.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].width,
  574.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].height,
  575.               0, 0);
  576.  
  577.  
  578.     }
  579.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].window)
  580.     {
  581.  
  582.       current_server -> DISPLAY_LIST[current_server -> current_items - 1].Y_length =
  583.         FHEIGHT * current_server -> COMMAND_LIST[BUTTON_ps_cpu].Y_mult;
  584.  
  585.       update_ps_cpu (current_server);
  586.  
  587.       XCopyArea (
  588.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].display,
  589.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].pixmap,
  590.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].window,
  591.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].gc, 0, 0,
  592.       current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_width,
  593.       current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_height,
  594.               0, 0);
  595.  
  596.  
  597.  
  598.     }
  599.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].window)
  600.     {
  601.  
  602.  
  603.       current_server -> DISPLAY_LIST[current_server ->
  604.                      current_items - 1].Y_length =
  605.         FHEIGHT * current_server -> COMMAND_LIST[BUTTON_ps_io].Y_mult;
  606.  
  607.       update_ps_io (current_server);
  608.  
  609.       XCopyArea (
  610.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].display,
  611.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].pixmap,
  612.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].window,
  613.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].gc, 0, 0,
  614.        current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_width,
  615.       current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_height,
  616.               0, 0);
  617.  
  618.     }
  619.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].window)
  620.     {
  621.  
  622.       current_server -> DISPLAY_LIST[current_server -> current_items - 1].Y_length =
  623.         FHEIGHT * current_server -> COMMAND_LIST[BUTTON_ps_mem].Y_mult;
  624.  
  625.       update_ps_mem (current_server);
  626.  
  627.       XCopyArea (
  628.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].display,
  629.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].pixmap,
  630.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].window,
  631.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].gc, 0, 0,
  632.       current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_width,
  633.       current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_height,
  634.               0, 0);
  635.  
  636.  
  637.  
  638.     }
  639.     }
  640.   else
  641.     while (i < current_server -> current_items)
  642.       {
  643.  
  644.  
  645.     switch (current_server -> DISPLAY_LIST[i].button_num)
  646.       {
  647.       case BUTTON_cpu:
  648.  
  649.  
  650.         for (itmp = 0; itmp < 5; itmp++)
  651.           {
  652.         if (itmp != CPU_WAIT)
  653.           current_server -> cpu_ticks[itmp] = sysidelta (cpu[itmp]);
  654.           }
  655. /*
  656.  
  657. fprintf(stdout,"Total ticks = %ld\n",
  658.                 sysidelta (cpu[CPU_IDLE]) +
  659.                 sysidelta (cpu[CPU_USER]) +
  660.                 sysidelta (cpu[CPU_KERNEL]) +
  661.                 sysidelta (cpu[CPU_WAIT]) +
  662.                 sysidelta (cpu[CPU_SXBRK]));
  663.  
  664.  
  665.  
  666. fprintf(stdout,"Total cum ticks = %ld\n",
  667.         current_server -> my_sysinfo->cpu[CPU_USER] +
  668.         current_server -> my_sysinfo->cpu[CPU_KERNEL] +
  669.         current_server -> my_sysinfo->cpu[CPU_SXBRK]);
  670.  
  671. fprintf(stdout,"Total CPU ticks = %ld\n",sysidelta (cpu[CPU_USER]) +
  672.                      sysidelta (cpu[CPU_KERNEL]) +
  673.                      sysidelta (cpu[CPU_SXBRK]));
  674.  
  675. */
  676.  
  677.  
  678.  
  679.         current_server -> cpu_ticks[CPU_WAIT] = 0;
  680.         for (itmp = 0; itmp < 3; itmp++)
  681.           current_server -> cpu_ticks[CPU_WAIT] += (current_server -> wait_ticks[itmp] = sysidelta (wait[itmp]));
  682.  
  683.  
  684.  
  685.         total_ticks = update_CpuScale (current_server,
  686.                        0,
  687.                        (FHEIGHT * 1),
  688.                        current_server -> cpu_ticks);
  689.  
  690.         if (data_updated)
  691.           calc_cpu_avg (current_server -> cpu_ticks);
  692.  
  693.         get_cpu_avg (current_server -> cpu_ticks, 5);
  694.  
  695.         total_ticks = update_CpuScale (current_server,
  696.                        0,
  697.                        (FHEIGHT * 2),
  698.                        current_server -> cpu_ticks);
  699.  
  700.         get_cpu_avg (current_server -> cpu_ticks, 10);
  701.  
  702.         total_ticks = update_CpuScale (current_server,
  703.                        0,
  704.                        (FHEIGHT * 3),
  705.                        current_server -> cpu_ticks);
  706.  
  707. /*
  708.  * Should now update the window with the pixmap......
  709.  */
  710.  
  711.  
  712.         XCopyArea (
  713.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].display,
  714.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].pixmap,
  715.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].window,
  716.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].gc, 0, 0,
  717.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].width,
  718.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].height,
  719.             0, 0);
  720.  
  721.  
  722.  
  723.         break;
  724.  
  725.       case BUTTON_wait:
  726.  
  727.         for (itmp = 0; itmp < 5; itmp++)
  728.           {
  729.         if (itmp != CPU_WAIT)
  730.           current_server -> cpu_ticks[itmp] = sysidelta (cpu[itmp]);
  731.           }
  732.  
  733.         current_server -> cpu_ticks[CPU_WAIT] = 0;
  734.  
  735.         for (itmp = 0; itmp < 3; itmp++)
  736.           current_server -> cpu_ticks[CPU_WAIT] += (current_server -> wait_ticks[itmp] = sysidelta (wait[itmp]));
  737.  
  738.         total_ticks = current_server -> cpu_ticks[CPU_IDLE] + current_server -> cpu_ticks[CPU_WAIT] +
  739.           current_server -> cpu_ticks[CPU_SXBRK] + current_server -> cpu_ticks[CPU_KERNEL] +
  740.           current_server -> cpu_ticks[CPU_USER];
  741.  
  742.  
  743.         update_WaitScale (current_server, 0, (FHEIGHT * 1), total_ticks);
  744.  
  745.  
  746.         get_cpu_avg (current_server -> cpu_ticks, 5);
  747.         total_ticks = current_server -> cpu_ticks[CPU_IDLE] + current_server -> cpu_ticks[CPU_WAIT] +
  748.           current_server -> cpu_ticks[CPU_SXBRK] + current_server -> cpu_ticks[CPU_KERNEL] +
  749.           current_server -> cpu_ticks[CPU_USER];
  750.  
  751.  
  752.         if (data_updated)
  753.           calc_wait_avg (current_server -> wait_ticks);
  754.  
  755.         get_wait_avg (current_server -> wait_ticks, 5);
  756.  
  757.         update_WaitScale (current_server, 0, (FHEIGHT * 2), total_ticks);
  758.  
  759.         get_cpu_avg (current_server -> cpu_ticks, 10);
  760.         total_ticks = current_server -> cpu_ticks[CPU_IDLE] + current_server -> cpu_ticks[CPU_WAIT] +
  761.           current_server -> cpu_ticks[CPU_SXBRK] + current_server -> cpu_ticks[CPU_KERNEL] +
  762.           current_server -> cpu_ticks[CPU_USER];
  763.  
  764.  
  765.  
  766.         get_wait_avg (current_server -> wait_ticks, 10);
  767.  
  768.         update_WaitScale (current_server, 0, (FHEIGHT * 3), total_ticks);
  769.  
  770.         XCopyArea (
  771.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].display,
  772.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].pixmap,
  773.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].window,
  774.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].gc, 0, 0,
  775.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].width,
  776.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].height,
  777.             0, 0);
  778.         break;
  779.  
  780.       case BUTTON_mem:
  781.         update_MemScale (current_server);
  782.  
  783.         XCopyArea (
  784.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].display,
  785.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].pixmap,
  786.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].window,
  787.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].gc, 0, 0,
  788.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].width,
  789.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].height,
  790.             0, 0);
  791.  
  792.  
  793.  
  794.         break;
  795.       case BUTTON_other:
  796.         update_FilesScale (current_server);
  797.         XCopyArea (
  798.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].display,
  799.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].pixmap,
  800.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].window,
  801.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].gc, 0, 0,
  802.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].width,
  803.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].height,
  804.             0, 0);
  805.  
  806.         break;
  807.  
  808.       case BUTTON_cache:
  809.         update_CacheScale (current_server);
  810.         XCopyArea (
  811.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].display,
  812.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].pixmap,
  813.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].window,
  814.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].gc, 0, 0,
  815.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].width,
  816.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].height,
  817.             0, 0);
  818.  
  819.         break;
  820.  
  821.       case BUTTON_streams:
  822.         update_streams (current_server);
  823.         XCopyArea (
  824.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].display,
  825.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].pixmap,
  826.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].window,
  827.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].gc, 0, 0,
  828.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].width,
  829.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].height,
  830.             0, 0);
  831.  
  832.         break;
  833.  
  834.       case BUTTON_dev_stats:
  835.         update_dev_stats (current_server);
  836.  
  837.         XCopyArea (
  838.             current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].display,
  839.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].pixmap,
  840.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].window,
  841.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].gc,
  842.             0,
  843.             0,
  844.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].width,
  845.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].height,
  846.             0, 0);
  847.  
  848.         break;
  849.  
  850.       case BUTTON_disk_space:
  851.  
  852.         update_disk_space (current_server);
  853.  
  854.         XCopyArea (
  855.             current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].display,
  856.             current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].pixmap,
  857.             current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].window,
  858.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].gc,
  859.             0,
  860.             0,
  861.             current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].draw_width,
  862.             current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].draw_height,
  863.             0, 0);
  864.  
  865.         break;
  866.  
  867.       case BUTTON_sysinfo:
  868.         update_Sysinfo (current_server);
  869.         XCopyArea (
  870.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].display,
  871.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].pixmap,
  872.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].window,
  873.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].gc, 0, 0,
  874.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].width,
  875.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].height,
  876.             0, 0);
  877.         break;
  878.  
  879.       case BUTTON_nfsstat:
  880.         update_nfsstat (current_server);
  881.         XCopyArea (
  882.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].display,
  883.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].pixmap,
  884.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].window,
  885.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].gc, 0, 0,
  886.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].width,
  887.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].height,
  888.             0, 0);
  889.  
  890.         break;
  891.  
  892.       case BUTTON_tune_var:
  893.         draw_lower_main_statics (current_server);
  894.         XCopyArea (
  895.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].display,
  896.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].pixmap,
  897.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].window,
  898.             current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].gc, 0, 0,
  899.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].width,
  900.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].height,
  901.             0, 0);
  902.         break;
  903.  
  904.       case BUTTON_ps_mem:
  905.  
  906.         current_server -> DISPLAY_LIST[current_server -> current_items - 1].Y_length =
  907.           FHEIGHT * current_server -> COMMAND_LIST[BUTTON_ps_mem].Y_mult;
  908.  
  909.  
  910.         update_ps_mem (current_server);
  911.  
  912.         XCopyArea (
  913.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].display,
  914.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].pixmap,
  915.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].window,
  916.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].gc, 0, 0,
  917.             current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_width,
  918.             current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_height,
  919.             0, 0);
  920.  
  921.  
  922.         break;
  923.       case BUTTON_ps_cpu:
  924.  
  925.         current_server -> DISPLAY_LIST[current_server -> current_items - 1].Y_length =
  926.           FHEIGHT * current_server -> COMMAND_LIST[BUTTON_ps_cpu].Y_mult;
  927.  
  928.         update_ps_cpu (current_server);
  929.  
  930.         XCopyArea (
  931.             current_server -> SEPERATE_WINDOWS_LIST[current_server -> DISPLAY_LIST[i].button_num].display,
  932.             current_server -> SEPERATE_WINDOWS_LIST[current_server -> DISPLAY_LIST[i].button_num].pixmap,
  933.             current_server -> SEPERATE_WINDOWS_LIST[current_server -> DISPLAY_LIST[i].button_num].window,
  934.             current_server -> SEPERATE_WINDOWS_LIST[current_server -> DISPLAY_LIST[i].button_num].gc, 0, 0,
  935.             current_server -> SEPERATE_WINDOWS_LIST[current_server -> DISPLAY_LIST[i].button_num].draw_width,
  936.             current_server -> SEPERATE_WINDOWS_LIST[current_server -> DISPLAY_LIST[i].button_num].draw_height,
  937.             0, 0);
  938.  
  939.  
  940.         break;
  941.       case BUTTON_ps_io:
  942.  
  943.         current_server -> DISPLAY_LIST[current_server ->
  944.                        current_items - 1].Y_length =
  945.           FHEIGHT * current_server -> COMMAND_LIST[BUTTON_ps_io].Y_mult;
  946.  
  947.         update_ps_io (current_server);
  948.  
  949.         XCopyArea (
  950.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].display,
  951.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].pixmap,
  952.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].window,
  953.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].gc, 0, 0,
  954.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_width,
  955.             current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_height,
  956.             0, 0);
  957.  
  958.         break;
  959.       }
  960.  
  961.     i++;
  962.       }
  963. /*
  964.   fprintf(stdout,"leaving update_screen\n");
  965. */
  966. }                /* End of update_screen */
  967.  
  968. /*+-------------------------------------------------------------------------
  969.         update_display(read_new_kernel_data,sep_window)
  970. --------------------------------------------------------------------------*/
  971. void
  972. update_display (read_new_kernel_data, sep_window)
  973.      int             read_new_kernel_data;
  974.      Window          sep_window;
  975. {
  976.   int             i, j;
  977.  
  978.   int             temp = 2;
  979.  
  980.   int             boot_height = 0;
  981.  
  982.   Arg             args[32];
  983.   int             argcount;
  984.  
  985. /*
  986.   fprintf(stdout,"in update_display\n");
  987. */
  988.   save_last_reading (current_server);
  989.  
  990.   (void) ftime (¤t_server -> timeb_info_read);
  991.   current_server -> StatPeriod_msec =
  992.     delta_msec (current_server -> timeb_info_read,
  993.         current_server -> timeb_last_info_read);
  994.  
  995.   current_server -> timeb_last_info_read = current_server -> timeb_info_read;
  996.   if (sep_window > 0)
  997.     {
  998.       if (sep_window == window)
  999.     {
  1000. /*
  1001.   THIS SHOULD NEVER HAPPEN HOW!!!! DEAD CODE!!!????
  1002. */
  1003.  
  1004.       xsw_write (current_server,
  1005.              current_server -> FileDescriptor,
  1006.              send_user_data,
  1007.              sizeof (int));
  1008.  
  1009.       xsw_read (current_server,
  1010.             current_server -> FileDescriptor,
  1011.             ¤t_server -> user_data_pointer,
  1012.             sizeof (int));
  1013.     }
  1014.  
  1015. /* In ODT Gecko, The var table has dynamic structures now.... */
  1016.  
  1017.       xsw_write (current_server,
  1018.          current_server -> FileDescriptor,
  1019.          send_var_data,
  1020.          sizeof (int));
  1021.  
  1022.  
  1023.       xsw_read (current_server,
  1024.         current_server -> FileDescriptor,
  1025.         current_server -> my_v,
  1026.         sizeof (struct var));
  1027.  
  1028.  
  1029.       xsw_write (current_server,
  1030.          current_server -> FileDescriptor,
  1031.          send_bootstring_data,
  1032.          sizeof (int));
  1033.  
  1034.       xsw_read (current_server,
  1035.         current_server -> FileDescriptor,
  1036.         ¤t_server -> bootstring,
  1037.         sizeof (current_server -> bootstring)
  1038.     );
  1039.  
  1040.       xsw_read (current_server,
  1041.         current_server -> FileDescriptor,
  1042.         ¤t_server -> configuration_string_size,
  1043.         sizeof (current_server -> configuration_string_size)
  1044.     );
  1045.  
  1046. /*
  1047.  
  1048.   for (j = 0 ; j < 1024; j++ )
  1049.         if ( new_server-> configuration_string[j] == 10 )
  1050.                 boot_height++;
  1051.  
  1052.  
  1053.     boot_height += current_server my_bootinfo -> memavailcnt +
  1054.             current_server -> my_bootinfo -> memusedcn + 11);
  1055.  
  1056.   Need to check to see if we are really canging size.....!!!
  1057.  
  1058.           change_and_update_window_sizes (current_server,
  1059.                           BUTTON_tune_var,
  1060.                           boot_height);
  1061. */
  1062.  
  1063.  
  1064.  
  1065.       if (current_server -> configuration_string != NULL)
  1066.     free (current_server -> configuration_string);
  1067.  
  1068.       current_server -> configuration_string = (char *)
  1069.     calloc (1, current_server -> configuration_string_size);
  1070.  
  1071.       xsw_read (current_server,
  1072.         current_server -> FileDescriptor,
  1073.         current_server -> configuration_string,
  1074.         current_server -> configuration_string_size
  1075.     );
  1076.  
  1077.  
  1078.       if ((sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].window) ||
  1079.       (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].window) ||
  1080.       (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].window) ||
  1081.       (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].window) ||
  1082.       (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].window))
  1083.     {
  1084.  
  1085. /*
  1086.  * Get freemem data....
  1087.  */
  1088.  
  1089.       xsw_write (current_server,
  1090.              current_server -> FileDescriptor,
  1091.              send_freemem_data,
  1092.              sizeof (int));
  1093.  
  1094.       xsw_read (current_server,
  1095.             current_server -> FileDescriptor,
  1096.             current_server -> my_freemem,
  1097.             sizeof (int));
  1098. /*
  1099.  * Get availsmem data....
  1100.  */
  1101.  
  1102.       xsw_write (current_server,
  1103.              current_server -> FileDescriptor,
  1104.              send_availsmem_data,
  1105.              sizeof (int));
  1106.  
  1107.       xsw_read (current_server,
  1108.             current_server -> FileDescriptor,
  1109.             current_server -> my_availsmem,
  1110.             sizeof (int));
  1111.  
  1112. /*
  1113.  * Get maxmem data....
  1114.  */
  1115.       xsw_write (current_server,
  1116.              current_server -> FileDescriptor,
  1117.              send_maxmem_data, sizeof (int));
  1118.  
  1119.       xsw_read (current_server,
  1120.             current_server -> FileDescriptor,
  1121.             current_server -> my_maxmem,
  1122.             sizeof (int));
  1123.  
  1124. /*
  1125.  * Get sysinfo data....
  1126.  */
  1127.  
  1128.       xsw_write (current_server,
  1129.              current_server -> FileDescriptor,
  1130.              send_sysinfo_data,
  1131.              sizeof (int));
  1132.  
  1133.       xsw_read (current_server,
  1134.             current_server -> FileDescriptor,
  1135.             current_server -> my_sysinfo,
  1136.             sizeof (struct sysinfo));
  1137.  
  1138. /*
  1139.  * Get minfo data....
  1140.  */
  1141.  
  1142.       xsw_write (current_server,
  1143.              current_server -> FileDescriptor,
  1144.              send_minfo_data,
  1145.              sizeof (int));
  1146.  
  1147.       xsw_read (current_server,
  1148.             current_server -> FileDescriptor,
  1149.             current_server -> my_minfo,
  1150.             sizeof (struct minfo));
  1151.  
  1152.       current_server -> cummulative_memory_used +=
  1153.         *current_server -> my_freemem;
  1154.       current_server -> cummulative_swap_used +=
  1155.         current_server -> my_minfo -> freeswap *
  1156.         NBPSCTR / 1024;
  1157.       current_server -> cummulative_avail_swap +=
  1158.         *current_server -> my_availsmem * NBPP / 1024;
  1159.  
  1160.       current_server -> memory_sample_count++;
  1161.  
  1162.  
  1163.     }
  1164.  
  1165.  
  1166.       if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].window)
  1167.     {
  1168.       current_server -> cur_device_displayed = 0;
  1169.       if (current_server -> got_floppy_disk_stats)
  1170.         {
  1171.           xsw_write (current_server,
  1172.              current_server -> FileDescriptor,
  1173.              send_floppy_disk_data,
  1174.              sizeof (int));
  1175.  
  1176.           xsw_read (current_server,
  1177.             current_server -> FileDescriptor,
  1178.             ¤t_server -> floppy_disk_stats,
  1179.             sizeof (current_server -> floppy_disk_stats));
  1180.  
  1181.           current_server -> cur_device_displayed +=
  1182.         count_active_devices (current_server -> floppy_disk_stats,
  1183.                    current_server -> old_floppy_disk_stats);
  1184.  
  1185.         }
  1186.  
  1187.       if (current_server -> got_scsi_disk_stats)
  1188.         {
  1189.           xsw_write (current_server,
  1190.              current_server -> FileDescriptor,
  1191.              send_scsi_disk_data,
  1192.              sizeof (int));
  1193.  
  1194.           xsw_read (current_server,
  1195.             current_server -> FileDescriptor,
  1196.             ¤t_server -> Sdsk_stats,
  1197.             sizeof (current_server -> Sdsk_stats));
  1198.  
  1199.           current_server -> cur_device_displayed +=
  1200.         count_active_devices (current_server -> Sdsk_stats,
  1201.                       current_server -> old_Sdsk_stats);
  1202.         }
  1203.  
  1204.       if (current_server -> got_scsi_tape_stats)
  1205.         {
  1206.           xsw_write (current_server,
  1207.              current_server -> FileDescriptor,
  1208.              send_scsi_tape_data,
  1209.              sizeof (int));
  1210.  
  1211.           xsw_read (current_server,
  1212.             current_server -> FileDescriptor,
  1213.             ¤t_server -> Stp_stats,
  1214.             sizeof (current_server -> Stp_stats));
  1215.  
  1216.           current_server -> cur_device_displayed +=
  1217.         count_active_devices (current_server -> Stp_stats,
  1218.                       current_server -> old_Stp_stats);
  1219.         }
  1220.       if (current_server -> got_scsi_rom_stats)
  1221.         {
  1222.           xsw_write (current_server,
  1223.              current_server -> FileDescriptor,
  1224.              send_scsi_rom_data,
  1225.              sizeof (int));
  1226.  
  1227.           xsw_read (current_server,
  1228.             current_server -> FileDescriptor,
  1229.             ¤t_server -> Srom_stats,
  1230.             sizeof (current_server -> Srom_stats));
  1231.  
  1232.           current_server -> cur_device_displayed +=
  1233.         count_active_devices (current_server -> Srom_stats,
  1234.                       current_server -> old_Srom_stats);
  1235.         }
  1236.  
  1237.       if (current_server -> got_esdi_disk_stats)
  1238.         {
  1239.           xsw_write (current_server,
  1240.              current_server -> FileDescriptor,
  1241.              send_esdi_disk_data,
  1242.              sizeof (int));
  1243.  
  1244.           xsw_read (current_server,
  1245.             current_server -> FileDescriptor,
  1246.             ¤t_server -> esdi_disk_stats,
  1247.             sizeof (current_server -> esdi_disk_stats));
  1248.  
  1249.           current_server -> cur_device_displayed +=
  1250.         count_active_devices (current_server -> esdi_disk_stats,
  1251.                       current_server -> old_esdi_disk_stats);
  1252.         }
  1253.       if (current_server -> got_wd_disk_stats)
  1254.         {
  1255.           xsw_write (current_server,
  1256.              current_server -> FileDescriptor,
  1257.              send_wd_disk_data,
  1258.              sizeof (int));
  1259.  
  1260.           xsw_read (current_server,
  1261.             current_server -> FileDescriptor,
  1262.             ¤t_server -> wd_disk_stats,
  1263.             sizeof (current_server -> wd_disk_stats));
  1264.  
  1265.           current_server -> cur_device_displayed +=
  1266.         count_active_devices (current_server -> wd_disk_stats,
  1267.                       current_server -> old_wd_disk_stats);
  1268.         }
  1269.  
  1270.  
  1271.       if (current_server -> got_cart_tape_stats)
  1272.         {
  1273.           xsw_write (current_server,
  1274.              current_server -> FileDescriptor,
  1275.              send_cart_tape_data,
  1276.              sizeof (int));
  1277.  
  1278.           xsw_read (current_server,
  1279.             current_server -> FileDescriptor,
  1280.             ¤t_server -> cart_tape_stats,
  1281.             sizeof (current_server -> cart_tape_stats));
  1282.  
  1283.           current_server -> cur_device_displayed +=
  1284.         count_active_devices (current_server -> cart_tape_stats,
  1285.                       current_server -> old_cart_tape_stats);
  1286.         }
  1287.  
  1288.       if (current_server -> cur_device_displayed > current_server -> max_device_displayed)
  1289.         {
  1290.  
  1291.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].Y_mult = current_server -> cur_device_displayed + 1;
  1292.  
  1293.           change_and_update_window_sizes (current_server,
  1294.                           BUTTON_dev_stats,
  1295.                 current_server -> cur_device_displayed + 1);
  1296.  
  1297.           current_server -> max_device_displayed =
  1298.         current_server -> cur_device_displayed;
  1299.  
  1300.         }
  1301.  
  1302.  
  1303.     }
  1304.  
  1305.       if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].window)
  1306.     {
  1307.  
  1308.       xsw_write (current_server,
  1309.              current_server -> FileDescriptor,
  1310.              send_disk_space_data,
  1311.              sizeof (int));
  1312.  
  1313. /*
  1314.  * Save current data
  1315.  */
  1316.       if (current_server -> current_disk_space_bak != NULL)
  1317.         free (current_server -> current_disk_space_bak);
  1318.  
  1319.       current_server -> current_disk_space_bak =
  1320.         current_server -> current_disk_space;
  1321.  
  1322.       current_server -> current_disk_space_entries_bak =
  1323.         current_server -> current_disk_space_entries;
  1324.  
  1325. /*
  1326.  * Read new data
  1327.  */
  1328.  
  1329.  
  1330.       xsw_read (current_server,
  1331.             current_server -> FileDescriptor,
  1332.             ¤t_server -> current_disk_space_entries,
  1333.             sizeof (int));
  1334.  
  1335.       current_server -> current_disk_space =
  1336.         (struct disk_space_struct *)
  1337.         malloc (current_server -> current_disk_space_entries *
  1338.             sizeof (struct disk_space_struct));
  1339.  
  1340.       xsw_read (current_server,
  1341.             current_server -> FileDescriptor,
  1342.             current_server -> current_disk_space,
  1343.             current_server -> current_disk_space_entries *
  1344.             sizeof (struct disk_space_struct));
  1345.  
  1346. /*
  1347.       if (current_server -> current_disk_space_entries >
  1348.           current_server -> max_disk_space_entries)
  1349.  
  1350.         {
  1351.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].Y_mult =
  1352.         current_server -> current_disk_space_entries + 1;
  1353.  
  1354.           current_server -> max_disk_space_entries =
  1355.         current_server -> current_disk_space_entries;
  1356.  
  1357.  
  1358.  
  1359.           change_and_update_window_sizes (
  1360.                            current_server,
  1361.                            BUTTON_disk_space,
  1362.               current_server -> current_disk_space_entries + 1);
  1363.         }
  1364. */
  1365.  
  1366.     }
  1367.  
  1368.       if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].window)
  1369.     {
  1370.       xsw_write (current_server,
  1371.              current_server -> FileDescriptor,
  1372.              send_files_data,
  1373.              sizeof (int));
  1374.  
  1375.       xsw_read (current_server,
  1376.             current_server -> FileDescriptor,
  1377.             ¤t_server -> file_count,
  1378.             sizeof (int));
  1379.  
  1380.       xsw_write (current_server,
  1381.              current_server -> FileDescriptor,
  1382.              send_inodes_data,
  1383.              sizeof (int));
  1384.  
  1385.       xsw_read (current_server,
  1386.             current_server -> FileDescriptor,
  1387.             ¤t_server -> inode_count,
  1388.             sizeof (int));
  1389.  
  1390.       xsw_write (current_server,
  1391.              current_server -> FileDescriptor,
  1392.              send_procs_data,
  1393.              sizeof (int));
  1394.  
  1395.       xsw_read (current_server,
  1396.             current_server -> FileDescriptor,
  1397.             ¤t_server -> proc_count,
  1398.             sizeof (int));
  1399.  
  1400.       xsw_write (current_server,
  1401.              current_server -> FileDescriptor,
  1402.              send_regions_data,
  1403.              sizeof (int));
  1404.  
  1405.       xsw_read (current_server,
  1406.             current_server -> FileDescriptor,
  1407.             ¤t_server -> region_count,
  1408.             sizeof (int));
  1409.  
  1410.       xsw_write (current_server,
  1411.              current_server -> FileDescriptor,
  1412.              send_cblocks_data,
  1413.              sizeof (int));
  1414.  
  1415.       xsw_read (current_server,
  1416.             current_server -> FileDescriptor,
  1417.             ¤t_server -> myclist,
  1418.             sizeof (int));
  1419.  
  1420.  
  1421.       xsw_write (current_server,
  1422.              current_server -> FileDescriptor,
  1423.              send_call_data,
  1424.              sizeof (int));
  1425.  
  1426.       xsw_read (current_server,
  1427.             current_server -> FileDescriptor,
  1428.             ¤t_server -> callout_count,
  1429.             sizeof (int));
  1430.  
  1431.       xsw_write (current_server,
  1432.              current_server -> FileDescriptor,
  1433.              send_mount_data,
  1434.              sizeof (int));
  1435.  
  1436.       xsw_read (current_server,
  1437.             current_server -> FileDescriptor,
  1438.             ¤t_server -> mount_count,
  1439.             sizeof (int));
  1440.  
  1441.  
  1442.     }
  1443.  
  1444.       if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].window)
  1445.     {
  1446.  
  1447.       xsw_write (current_server,
  1448.              current_server -> FileDescriptor,
  1449.              send_streams_data,
  1450.              sizeof (int));
  1451.  
  1452.       xsw_read (current_server,
  1453.             current_server -> FileDescriptor,
  1454.             current_server -> mystreams,
  1455.             sizeof (struct strstat));
  1456.  
  1457.       xsw_read (current_server,
  1458.             current_server -> FileDescriptor,
  1459.             current_server -> mynmblock,
  1460.             sizeof (int));
  1461.  
  1462.       if ( current_server -> os_version == 1 )
  1463.         {
  1464.         
  1465.           xsw_read (current_server,
  1466.                 current_server -> FileDescriptor,
  1467.                 current_server -> pagest,
  1468.                 sizeof (struct pagestat));
  1469.  
  1470.           xsw_read (current_server,
  1471.                 current_server -> FileDescriptor,
  1472.                 current_server -> Rbsize,
  1473.                 15 * sizeof(uint));
  1474.  
  1475.         }
  1476.        else
  1477.       if ( current_server -> os_version == 0 )
  1478.         {
  1479.           xsw_read (current_server,
  1480.                 current_server -> FileDescriptor,
  1481.                 current_server -> rbsize,
  1482.                 9 * sizeof(ushort));
  1483.  
  1484.         }
  1485.  
  1486.     }
  1487.  
  1488.       if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].window)
  1489.     {
  1490.  
  1491.       xsw_write (current_server,
  1492.              current_server -> FileDescriptor,
  1493.              send_nfs_data,
  1494.              sizeof (int));
  1495.  
  1496.       xsw_read (current_server,
  1497.             current_server -> FileDescriptor,
  1498.             ¤t_server -> rcstat,
  1499.             sizeof (current_server -> rcstat));
  1500.  
  1501.       xsw_read (current_server,
  1502.             current_server -> FileDescriptor,
  1503.             ¤t_server -> rsstat,
  1504.             sizeof (current_server -> rsstat));
  1505.  
  1506.       xsw_read (current_server,
  1507.             current_server -> FileDescriptor,
  1508.             ¤t_server -> clstat,
  1509.             sizeof (current_server -> clstat));
  1510.  
  1511.       xsw_read (current_server,
  1512.             current_server -> FileDescriptor,
  1513.             ¤t_server -> svstat,
  1514.             sizeof (current_server -> svstat));
  1515.  
  1516.     }
  1517.       if (
  1518.        ((sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].window) ||
  1519.         (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].window) ||
  1520.         (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].window)))
  1521.     {
  1522.  
  1523.       (void) memcpy ((char *) current_server -> oldprocs,
  1524.              (char *) current_server -> procs,
  1525.              current_server -> slots_in_use *
  1526.              sizeof (struct my_proc_struct));
  1527.  
  1528.       current_server -> noldprocs = current_server -> nprocs;
  1529.  
  1530.       (void) memcpy ((char *) current_server -> poldprocs,
  1531.              (char *) current_server -> pprocs,
  1532.              current_server -> noldprocs *
  1533.              sizeof (struct my_proc_struct *));
  1534.  
  1535.       grok_proc (current_server);
  1536.  
  1537.       if (sep_window ==
  1538.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].window)
  1539.         {
  1540.           if (current_server -> max_slots_in_use >
  1541.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_height / FHEIGHT)
  1542.         {
  1543.  
  1544.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_width =
  1545.             DisplayWidth (display, screen);
  1546.  
  1547.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_height =
  1548.             (FHEIGHT * current_server -> max_slots_in_use) +
  1549.             (FHEIGHT * 10);
  1550.  
  1551.           XFreePixmap (
  1552.                 current_server ->
  1553.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].display,
  1554.                 current_server ->
  1555.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].pixmap);
  1556.  
  1557.  
  1558.           current_server ->
  1559.             SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].pixmap =
  1560.             XCreatePixmap (
  1561.                     XtDisplay (current_server ->
  1562.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].DrawAreaW),
  1563.                     RootWindowOfScreen (
  1564.                              XtScreen (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].DrawAreaW)),
  1565.                     current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_width,
  1566.                     current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_height,
  1567.                     DefaultDepthOfScreen (
  1568.                                XtScreen (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].DrawAreaW)));
  1569.  
  1570.           argcount = 0;
  1571.           XtSetArg (args[argcount], XmNheight, (XtArgVal) current_server ->
  1572.               SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_height);
  1573.           argcount++;
  1574.           XtSetValues (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].DrawAreaW,
  1575.                    args, argcount);
  1576.  
  1577.  
  1578.         }
  1579.  
  1580.         }
  1581.       if (sep_window ==
  1582.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].window)
  1583.         {
  1584.           if (current_server -> max_slots_in_use >
  1585.           current_server ->
  1586.           SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_height / FHEIGHT)
  1587.         {
  1588.  
  1589.           current_server ->
  1590.             SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_width =
  1591.             DisplayWidth (display, screen);
  1592.  
  1593.           current_server ->
  1594.             SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_height =
  1595.             (FHEIGHT * current_server -> max_slots_in_use) +
  1596.             (FHEIGHT * 10);
  1597.  
  1598.           XFreePixmap (
  1599.                 current_server ->
  1600.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_io].display,
  1601.                 current_server ->
  1602.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_io].pixmap);
  1603.  
  1604.  
  1605.           current_server ->
  1606.             SEPERATE_WINDOWS_LIST[BUTTON_ps_io].pixmap =
  1607.             XCreatePixmap (
  1608.                     XtDisplay (current_server ->
  1609.                  SEPERATE_WINDOWS_LIST[BUTTON_ps_io].DrawAreaW),
  1610.                     RootWindowOfScreen (
  1611.                              XtScreen (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].DrawAreaW)),
  1612.                     current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_width,
  1613.                     current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_height,
  1614.                     DefaultDepthOfScreen (
  1615.                                XtScreen (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].DrawAreaW)));
  1616.  
  1617.           argcount = 0;
  1618.           XtSetArg (args[argcount], XmNheight, (XtArgVal) current_server ->
  1619.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_height);
  1620.           argcount++;
  1621.           XtSetValues (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].DrawAreaW,
  1622.                    args, argcount);
  1623.  
  1624.  
  1625.         }
  1626.         }
  1627.  
  1628.       if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].window)
  1629.         {
  1630.  
  1631.           read_memory_stats (current_server);
  1632.  
  1633. /*
  1634.  * Adjust screen height if neccessary....
  1635.  */
  1636.  
  1637.           if (current_server -> current_mem_procs >
  1638.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_height / FHEIGHT)
  1639.         {
  1640.  
  1641.           current_server ->
  1642.             SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_width =
  1643.             DisplayWidth (display, screen);
  1644.  
  1645.           current_server ->
  1646.             SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_height =
  1647.             (FHEIGHT * current_server -> current_mem_procs) +
  1648.             (FHEIGHT * 10);
  1649.  
  1650.           XFreePixmap (
  1651.                 current_server ->
  1652.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].display,
  1653.                 current_server ->
  1654.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].pixmap);
  1655.  
  1656.  
  1657.           current_server ->
  1658.             SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].pixmap =
  1659.             XCreatePixmap (
  1660.                     XtDisplay (current_server ->
  1661.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].DrawAreaW),
  1662.                     RootWindowOfScreen (
  1663.                              XtScreen (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].DrawAreaW)),
  1664.                     current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_width,
  1665.                     current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_height,
  1666.                     DefaultDepthOfScreen (
  1667.                                XtScreen (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].DrawAreaW)));
  1668.  
  1669.           argcount = 0;
  1670.           XtSetArg (args[argcount], XmNheight, (XtArgVal) current_server ->
  1671.               SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_height);
  1672.           argcount++;
  1673.           XtSetValues (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].DrawAreaW,
  1674.                    args, argcount);
  1675.  
  1676.  
  1677.  
  1678.  
  1679.         }
  1680.  
  1681.         }
  1682.  
  1683.  
  1684.     }
  1685.     }
  1686.   else
  1687.     {
  1688. /*
  1689.       (void) ftime (&timeb_info_read);
  1690.       StatPeriod_msec = delta_msec (timeb_info_read, timeb_last_info_read);
  1691.       timeb_last_info_read = timeb_info_read;
  1692. */
  1693.       xsw_write (current_server,
  1694.          current_server -> FileDescriptor,
  1695.          send_user_data,
  1696.          sizeof (int));
  1697.  
  1698.       xsw_read (current_server,
  1699.         current_server -> FileDescriptor,
  1700.         ¤t_server -> user_data_pointer,
  1701.         sizeof (int));
  1702. /* In ODT Gecko , The var table has dynamic structures now.... */
  1703.  
  1704.       xsw_write (current_server,
  1705.          current_server -> FileDescriptor,
  1706.          send_var_data,
  1707.          sizeof (int));
  1708.  
  1709.       xsw_read (current_server,
  1710.         current_server -> FileDescriptor,
  1711.         current_server -> my_v,
  1712.         sizeof (struct var));
  1713.  
  1714.       if ((current_server -> COMMAND_LIST[BUTTON_sysinfo].on == 1) ||
  1715.       (current_server -> COMMAND_LIST[BUTTON_cpu].on == 1) ||
  1716.       (current_server -> COMMAND_LIST[BUTTON_wait].on == 1) ||
  1717.       (current_server -> COMMAND_LIST[BUTTON_mem].on == 1) ||
  1718.       (current_server -> COMMAND_LIST[BUTTON_cache].on == 1))
  1719.     {
  1720.  
  1721.       xsw_write (current_server,
  1722.              current_server -> FileDescriptor,
  1723.              send_freemem_data,
  1724.              sizeof (int));
  1725.  
  1726.       xsw_read (current_server,
  1727.             current_server -> FileDescriptor,
  1728.             current_server -> my_freemem,
  1729.             sizeof (int));
  1730.  
  1731.       xsw_write (current_server,
  1732.              current_server -> FileDescriptor,
  1733.              send_availsmem_data,
  1734.              sizeof (int));
  1735.  
  1736.       xsw_read (current_server,
  1737.             current_server -> FileDescriptor,
  1738.             current_server -> my_availsmem,
  1739.             sizeof (int));
  1740.  
  1741.       xsw_write (current_server,
  1742.              current_server -> FileDescriptor,
  1743.              send_maxmem_data,
  1744.              sizeof (int));
  1745.  
  1746.       xsw_read (current_server,
  1747.             current_server -> FileDescriptor,
  1748.             current_server -> my_maxmem,
  1749.             sizeof (int));
  1750.  
  1751.       xsw_write (current_server,
  1752.              current_server -> FileDescriptor,
  1753.              send_sysinfo_data,
  1754.              sizeof (int));
  1755.  
  1756.       xsw_read (current_server,
  1757.             current_server -> FileDescriptor,
  1758.             current_server -> my_sysinfo,
  1759.             sizeof (struct sysinfo));
  1760.  
  1761.  
  1762.       xsw_write (current_server,
  1763.              current_server -> FileDescriptor,
  1764.              send_minfo_data,
  1765.              sizeof (int));
  1766.  
  1767.       xsw_read (current_server,
  1768.             current_server -> FileDescriptor,
  1769.             current_server -> my_minfo,
  1770.             sizeof (struct minfo));
  1771.  
  1772.       current_server -> cummulative_memory_used +=
  1773.         *current_server -> my_freemem;
  1774.  
  1775.       current_server -> cummulative_swap_used +=
  1776.         current_server -> my_minfo -> freeswap *
  1777.         NBPSCTR / 1024;
  1778.  
  1779.       current_server -> cummulative_avail_swap +=
  1780.         *current_server -> my_availsmem * NBPP / 1024;
  1781.  
  1782.       current_server -> memory_sample_count++;
  1783.  
  1784.  
  1785.     }
  1786.  
  1787.       if (current_server -> COMMAND_LIST[BUTTON_dev_stats].on == 1)
  1788.     {
  1789.       current_server -> cur_device_displayed = 0;
  1790.       if (current_server -> got_floppy_disk_stats)
  1791.         {
  1792.  
  1793.           xsw_write (current_server,
  1794.              current_server -> FileDescriptor,
  1795.              send_floppy_disk_data,
  1796.              sizeof (int));
  1797.  
  1798.           xsw_read (current_server,
  1799.             current_server -> FileDescriptor,
  1800.             ¤t_server -> floppy_disk_stats,
  1801.             sizeof (current_server -> floppy_disk_stats));
  1802.  
  1803.           current_server -> cur_device_displayed +=
  1804.         count_active_devices (current_server -> floppy_disk_stats,
  1805.                    current_server -> old_floppy_disk_stats);
  1806.         }
  1807.  
  1808.       if (current_server -> got_scsi_disk_stats)
  1809.         {
  1810.           xsw_write (current_server,
  1811.              current_server -> FileDescriptor,
  1812.              send_scsi_disk_data,
  1813.              sizeof (int));
  1814.  
  1815.           xsw_read (current_server,
  1816.             current_server -> FileDescriptor,
  1817.             ¤t_server -> Sdsk_stats,
  1818.             sizeof (current_server -> Sdsk_stats));
  1819.  
  1820.           current_server -> cur_device_displayed +=
  1821.         count_active_devices (current_server -> Sdsk_stats,
  1822.                       current_server -> old_Sdsk_stats);
  1823.         }
  1824.  
  1825.       if (current_server -> got_scsi_tape_stats)
  1826.         {
  1827.           xsw_write (current_server,
  1828.              current_server -> FileDescriptor,
  1829.              send_scsi_tape_data,
  1830.              sizeof (int));
  1831.  
  1832.  
  1833.           xsw_read (current_server,
  1834.             current_server -> FileDescriptor,
  1835.             ¤t_server -> Stp_stats,
  1836.             sizeof (current_server -> Stp_stats));
  1837.  
  1838.           current_server -> cur_device_displayed +=
  1839.         count_active_devices (current_server -> Stp_stats,
  1840.                       current_server -> old_Stp_stats);
  1841.         }
  1842.       if (current_server -> got_scsi_rom_stats)
  1843.         {
  1844.  
  1845.           xsw_write (current_server,
  1846.              current_server -> FileDescriptor,
  1847.              send_scsi_rom_data,
  1848.              sizeof (int));
  1849.  
  1850.           xsw_read (current_server,
  1851.             current_server -> FileDescriptor,
  1852.             ¤t_server -> Srom_stats,
  1853.             sizeof (current_server -> Srom_stats));
  1854.  
  1855.           current_server -> cur_device_displayed +=
  1856.         count_active_devices (current_server -> Srom_stats,
  1857.                       current_server -> old_Srom_stats);
  1858.         }
  1859.  
  1860.       if (current_server -> got_esdi_disk_stats)
  1861.         {
  1862.  
  1863.           xsw_write (current_server,
  1864.              current_server -> FileDescriptor,
  1865.              send_esdi_disk_data,
  1866.              sizeof (int));
  1867.  
  1868.           xsw_read (current_server,
  1869.             current_server -> FileDescriptor,
  1870.             ¤t_server -> esdi_disk_stats,
  1871.             sizeof (current_server -> esdi_disk_stats));
  1872.  
  1873.           current_server -> cur_device_displayed +=
  1874.         count_active_devices (current_server -> esdi_disk_stats,
  1875.                       current_server -> old_esdi_disk_stats);
  1876.         }
  1877.  
  1878.       if (current_server -> got_wd_disk_stats)
  1879.         {
  1880.  
  1881.           xsw_write (current_server,
  1882.              current_server -> FileDescriptor,
  1883.              send_wd_disk_data,
  1884.              sizeof (int));
  1885.  
  1886.           xsw_read (current_server,
  1887.             current_server -> FileDescriptor,
  1888.             ¤t_server -> wd_disk_stats,
  1889.             sizeof (current_server -> wd_disk_stats));
  1890.  
  1891.           current_server -> cur_device_displayed +=
  1892.         count_active_devices (current_server -> wd_disk_stats,
  1893.                       current_server -> old_wd_disk_stats);
  1894.         }
  1895.  
  1896.       if (current_server -> got_cart_tape_stats)
  1897.         {
  1898.  
  1899.           xsw_write (current_server,
  1900.              current_server -> FileDescriptor,
  1901.              send_cart_tape_data,
  1902.              sizeof (int));
  1903.  
  1904.           xsw_read (current_server,
  1905.             current_server -> FileDescriptor,
  1906.             ¤t_server -> cart_tape_stats,
  1907.             sizeof (current_server -> cart_tape_stats));
  1908.  
  1909.           current_server -> cur_device_displayed +=
  1910.         count_active_devices (current_server -> cart_tape_stats,
  1911.                       current_server -> old_cart_tape_stats);
  1912.         }
  1913.  
  1914.       if (current_server -> cur_device_displayed > current_server -> max_device_displayed)
  1915.         {
  1916.  
  1917.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].Y_mult = current_server -> cur_device_displayed + 1;
  1918.           change_and_update_window_sizes (current_server,
  1919.                           BUTTON_dev_stats,
  1920.                 current_server -> cur_device_displayed + 1);
  1921.  
  1922.           current_server -> max_device_displayed = current_server -> cur_device_displayed;
  1923.  
  1924.         }
  1925.  
  1926.  
  1927.     }
  1928.  
  1929.  
  1930.       if (current_server -> COMMAND_LIST[BUTTON_other].on == 1)
  1931.     {
  1932.  
  1933.       xsw_write (current_server,
  1934.              current_server -> FileDescriptor,
  1935.              send_files_data,
  1936.              sizeof (int));
  1937.  
  1938.       xsw_read (current_server,
  1939.             current_server -> FileDescriptor,
  1940.             ¤t_server -> file_count,
  1941.             sizeof (int));
  1942.  
  1943.       xsw_write (current_server,
  1944.              current_server -> FileDescriptor,
  1945.              send_inodes_data,
  1946.              sizeof (int));
  1947.  
  1948.       xsw_read (current_server,
  1949.             current_server -> FileDescriptor,
  1950.             ¤t_server -> inode_count,
  1951.             sizeof (int));
  1952.  
  1953.       xsw_write (current_server,
  1954.              current_server -> FileDescriptor,
  1955.              send_procs_data,
  1956.              sizeof (int));
  1957.  
  1958.       xsw_read (current_server,
  1959.             current_server -> FileDescriptor,
  1960.             ¤t_server -> proc_count,
  1961.             sizeof (int));
  1962.  
  1963.       xsw_write (current_server,
  1964.              current_server -> FileDescriptor,
  1965.              send_regions_data,
  1966.              sizeof (int));
  1967.  
  1968.       xsw_read (current_server,
  1969.             current_server -> FileDescriptor,
  1970.             ¤t_server -> region_count,
  1971.             sizeof (int));
  1972.  
  1973.       xsw_write (current_server,
  1974.              current_server -> FileDescriptor,
  1975.              send_cblocks_data,
  1976.              sizeof (int));
  1977.  
  1978.       xsw_read (current_server,
  1979.             current_server -> FileDescriptor,
  1980.             ¤t_server -> myclist,
  1981.             sizeof (int));
  1982.  
  1983.       xsw_write (current_server,
  1984.              current_server -> FileDescriptor,
  1985.              send_call_data,
  1986.              sizeof (int));
  1987.  
  1988.       xsw_read (current_server,
  1989.             current_server -> FileDescriptor,
  1990.             ¤t_server -> callout_count,
  1991.             sizeof (int));
  1992.  
  1993.       xsw_write (current_server,
  1994.              current_server -> FileDescriptor,
  1995.              send_mount_data,
  1996.              sizeof (int));
  1997.  
  1998.       xsw_read (current_server,
  1999.             current_server -> FileDescriptor,
  2000.             ¤t_server -> mount_count,
  2001.             sizeof (int));
  2002.  
  2003.  
  2004.  
  2005.     }
  2006.  
  2007.       if (current_server -> COMMAND_LIST[BUTTON_streams].on == 1)
  2008.     {
  2009.  
  2010.       xsw_write (current_server,
  2011.              current_server -> FileDescriptor,
  2012.              send_streams_data,
  2013.              sizeof (int));
  2014.  
  2015.       xsw_read (current_server,
  2016.             current_server -> FileDescriptor,
  2017.             current_server -> mystreams,
  2018.             sizeof (struct strstat));
  2019.  
  2020.       xsw_read (current_server,
  2021.             current_server -> FileDescriptor,
  2022.             current_server -> mynmblock,
  2023.             sizeof (int));
  2024.  
  2025.           if ( current_server -> os_version == 1 )
  2026.             {
  2027.  
  2028.               xsw_read (current_server,
  2029.                         current_server -> FileDescriptor,
  2030.                         current_server -> pagest,
  2031.                         sizeof (struct pagestat));
  2032.  
  2033.               xsw_read (current_server,
  2034.                         current_server -> FileDescriptor,
  2035.                         current_server -> Rbsize,
  2036.                         15 * sizeof(uint));
  2037.  
  2038.             }
  2039.           else
  2040.           if ( current_server -> os_version == 0 )
  2041.             {
  2042.               xsw_read (current_server,
  2043.                         current_server -> FileDescriptor,
  2044.                         current_server -> rbsize,
  2045.                         9 * sizeof(ushort));
  2046.  
  2047.             }
  2048.  
  2049.     }
  2050.       if (current_server -> COMMAND_LIST[BUTTON_disk_space].on == 1)
  2051.     {
  2052.  
  2053.       xsw_write (current_server,
  2054.              current_server -> FileDescriptor,
  2055.              send_disk_space_data,
  2056.              sizeof (int));
  2057.  
  2058. /*
  2059.  * Save current data
  2060.  */
  2061.  
  2062.       if (current_server -> current_disk_space_bak != NULL)
  2063.         free (current_server -> current_disk_space_bak);
  2064.  
  2065.       current_server -> current_disk_space_bak =
  2066.         current_server -> current_disk_space;
  2067.  
  2068.       current_server -> current_disk_space_entries_bak =
  2069.         current_server -> current_disk_space_entries;
  2070.  
  2071. /*
  2072.  * Read new data
  2073.  */
  2074.  
  2075.       xsw_read (current_server,
  2076.             current_server -> FileDescriptor,
  2077.             ¤t_server -> current_disk_space_entries,
  2078.             sizeof (int));
  2079.  
  2080.       current_server -> current_disk_space =
  2081.         (struct disk_space_struct *)
  2082.         malloc (current_server -> current_disk_space_entries *
  2083.             sizeof (struct disk_space_struct));
  2084.  
  2085.       xsw_read (current_server,
  2086.             current_server -> FileDescriptor,
  2087.             current_server -> current_disk_space,
  2088.             current_server -> current_disk_space_entries *
  2089.             sizeof (struct disk_space_struct));
  2090. /*
  2091.       if (current_server -> current_disk_space_entries >
  2092.           current_server -> max_disk_space_entries)
  2093.         {
  2094.  
  2095.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_disk_space].Y_mult =
  2096.         current_server -> current_disk_space_entries + 1;
  2097.  
  2098.           current_server -> max_disk_space_entries =
  2099.         current_server -> current_disk_space_entries;
  2100.  
  2101.  
  2102.  
  2103.           change_and_update_window_sizes (
  2104.                            current_server,
  2105.                            BUTTON_disk_space,
  2106.               current_server -> current_disk_space_entries + 1);
  2107.         }
  2108. */
  2109.  
  2110.  
  2111.     }
  2112.  
  2113.       if (current_server -> COMMAND_LIST[BUTTON_nfsstat].on == 1)
  2114.     {
  2115.  
  2116.       xsw_write (current_server,
  2117.              current_server -> FileDescriptor,
  2118.              send_nfs_data,
  2119.              sizeof (int));
  2120.  
  2121.       xsw_read (current_server,
  2122.             current_server -> FileDescriptor,
  2123.             ¤t_server -> rcstat,
  2124.             sizeof (current_server -> rcstat));
  2125.  
  2126.       xsw_read (current_server,
  2127.             current_server -> FileDescriptor,
  2128.             ¤t_server -> rsstat,
  2129.             sizeof (current_server -> rsstat));
  2130.  
  2131.       xsw_read (current_server,
  2132.             current_server -> FileDescriptor,
  2133.             ¤t_server -> clstat,
  2134.             sizeof (current_server -> clstat));
  2135.  
  2136.       xsw_read (current_server,
  2137.             current_server -> FileDescriptor,
  2138.             ¤t_server -> svstat,
  2139.             sizeof (current_server -> svstat));
  2140.  
  2141.     }
  2142.       if (((current_server -> COMMAND_LIST[BUTTON_ps_cpu].on == 1) ||
  2143.        (current_server -> COMMAND_LIST[BUTTON_ps_io].on == 1)))
  2144.     {
  2145.  
  2146.       (void) memcpy ((char *) current_server -> oldprocs,
  2147.              (char *) current_server -> procs,
  2148.              current_server -> slots_in_use *
  2149.              sizeof (struct my_proc_struct));
  2150.  
  2151.       current_server -> noldprocs = current_server -> nprocs;
  2152.  
  2153.       (void) memcpy ((char *) current_server -> poldprocs,
  2154.              (char *) current_server -> pprocs,
  2155.              current_server -> noldprocs *
  2156.              sizeof (struct my_proc_struct *));
  2157.  
  2158.  
  2159.       grok_proc (current_server);
  2160.  
  2161. /*
  2162.  * Determine if we need to increase the size of the drawing area......
  2163.  */
  2164.  
  2165.       if (current_server -> COMMAND_LIST[BUTTON_ps_cpu].on == 1)
  2166.         {
  2167.           if (current_server -> max_slots_in_use >
  2168.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_height / FHEIGHT)
  2169.         {
  2170.  
  2171.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_width =
  2172.             DisplayWidth (display, screen);
  2173.  
  2174.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_height =
  2175.             (FHEIGHT * current_server -> max_slots_in_use) +
  2176.             (FHEIGHT * 10);
  2177.  
  2178.           XFreePixmap (
  2179.                 current_server ->
  2180.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].display,
  2181.                 current_server ->
  2182.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].pixmap);
  2183.  
  2184.  
  2185.           current_server ->
  2186.             SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].pixmap =
  2187.             XCreatePixmap (
  2188.                     XtDisplay (current_server ->
  2189.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].DrawAreaW),
  2190.                     RootWindowOfScreen (
  2191.                              XtScreen (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].DrawAreaW)),
  2192.                     current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_width,
  2193.                     current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_height,
  2194.                     DefaultDepthOfScreen (
  2195.                                XtScreen (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].DrawAreaW)));
  2196.  
  2197.           argcount = 0;
  2198.           XtSetArg (args[argcount], XmNheight, (XtArgVal) current_server ->
  2199.               SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].draw_height);
  2200.           argcount++;
  2201.           XtSetValues (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_cpu].DrawAreaW,
  2202.                    args, argcount);
  2203.  
  2204.  
  2205.         }
  2206.  
  2207.         }
  2208.       if (current_server -> COMMAND_LIST[BUTTON_ps_io].on == 1)
  2209.         {
  2210.           if (current_server -> max_slots_in_use >
  2211.           current_server ->
  2212.           SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_height / FHEIGHT)
  2213.         {
  2214.  
  2215.           current_server ->
  2216.             SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_width =
  2217.             DisplayWidth (display, screen);
  2218.  
  2219.           current_server ->
  2220.             SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_height =
  2221.             (FHEIGHT * current_server -> max_slots_in_use) +
  2222.             (FHEIGHT * 10);
  2223.  
  2224.           XFreePixmap (
  2225.                 current_server ->
  2226.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_io].display,
  2227.                 current_server ->
  2228.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_io].pixmap);
  2229.  
  2230.  
  2231.           current_server ->
  2232.             SEPERATE_WINDOWS_LIST[BUTTON_ps_io].pixmap =
  2233.             XCreatePixmap (
  2234.                     XtDisplay (current_server ->
  2235.                  SEPERATE_WINDOWS_LIST[BUTTON_ps_io].DrawAreaW),
  2236.                     RootWindowOfScreen (
  2237.                              XtScreen (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].DrawAreaW)),
  2238.                     current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_width,
  2239.                     current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_height,
  2240.                     DefaultDepthOfScreen (
  2241.                                XtScreen (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].DrawAreaW)));
  2242.  
  2243.           argcount = 0;
  2244.           XtSetArg (args[argcount], XmNheight, (XtArgVal) current_server ->
  2245.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_io].draw_height);
  2246.           argcount++;
  2247.           XtSetValues (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_io].DrawAreaW,
  2248.                    args, argcount);
  2249.  
  2250.  
  2251.         }
  2252.         }
  2253.     }
  2254.  
  2255.  
  2256.       if (current_server -> COMMAND_LIST[BUTTON_ps_mem].on == 1)
  2257.     {
  2258.       read_memory_stats (current_server);
  2259. /*
  2260.  * Adjust screen height if neccessary....
  2261.  */
  2262.  
  2263.       if (current_server -> current_mem_procs >
  2264.           current_server ->
  2265.           SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_height / FHEIGHT)
  2266.         {
  2267.  
  2268.           current_server ->
  2269.         SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_width =
  2270.         DisplayWidth (display, screen);
  2271.  
  2272.           current_server ->
  2273.         SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_height =
  2274.         (FHEIGHT * current_server -> current_mem_procs) +
  2275.         (FHEIGHT * 10);
  2276.  
  2277.           XFreePixmap (
  2278.                 current_server ->
  2279.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].display,
  2280.                 current_server ->
  2281.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].pixmap);
  2282.  
  2283.  
  2284.           current_server ->
  2285.         SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].pixmap =
  2286.         XCreatePixmap (
  2287.                 XtDisplay (current_server ->
  2288.                 SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].DrawAreaW),
  2289.                 RootWindowOfScreen (
  2290.                              XtScreen (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].DrawAreaW)),
  2291.                 current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_width,
  2292.                 current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_height,
  2293.                 DefaultDepthOfScreen (
  2294.                                XtScreen (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].DrawAreaW)));
  2295.  
  2296.           argcount = 0;
  2297.           XtSetArg (args[argcount], XmNheight, (XtArgVal) current_server ->
  2298.             SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].draw_height);
  2299.           argcount++;
  2300.           XtSetValues (current_server -> SEPERATE_WINDOWS_LIST[BUTTON_ps_mem].DrawAreaW,
  2301.                args, argcount);
  2302.  
  2303.  
  2304.         }
  2305.     }
  2306.     }
  2307.  
  2308.   if (current_server -> connected)
  2309.     {
  2310.  
  2311.       update_StatPeriod (current_server);
  2312.       update_StatCycle (current_server);
  2313.       update_Users (current_server);
  2314.  
  2315.       update_screen (sep_window, 1);
  2316.  
  2317.       redrawing_entire_DrawArea = 0;
  2318.     }
  2319.  
  2320. /*
  2321.   fprintf(stdout,"leaving update_display\n");
  2322. */
  2323. }                /* end of update_display */
  2324.  
  2325. /*+-------------------------------------------------------------------------
  2326.         set_display_mode(new_mode)
  2327. --------------------------------------------------------------------------*/
  2328. void
  2329. set_display_mode (new_mode)
  2330.      int             new_mode;
  2331. {
  2332.   void            set_update_timer (unsigned long, struct NetworkXswStruct *);
  2333.  
  2334.   int             i = 0;
  2335.  
  2336.   int             turn_off = 0;
  2337.   int             position;
  2338.   int             Y_remove;
  2339.   int             need_to_realize = 0;
  2340.  
  2341.   Arg             args[32];
  2342.   int             argcount;
  2343.  
  2344.   XWindowAttributes DrawAreaXYWH_bak;
  2345.  
  2346.   XSizeHints     *my_size_hints;
  2347.  
  2348.  
  2349. /* Determine if button is already on. If so, set turn_off flag */
  2350.  
  2351.  
  2352.   while ((turn_off == 0) && (i < current_server -> current_items))
  2353.     {
  2354.       if (current_server -> DISPLAY_LIST[i].button_num == new_mode)
  2355.     {
  2356.       turn_off = 1;
  2357.       position = i;
  2358.     }
  2359.       i++;
  2360.     }
  2361.  
  2362.  
  2363.   if (turn_off == 1)
  2364.     {
  2365.  
  2366.  
  2367.       if (new_mode > Max_sub_menu_buttons)
  2368.     fprintf (stdout, "INTERNAL error\n");
  2369.  
  2370. /*
  2371.   Turn of button
  2372. */
  2373.  
  2374.       current_server -> TOGGLE_BUTTONS_STATE[new_mode] = 0;
  2375.  
  2376.       if (got_key_event)
  2377.     {
  2378.       if (input_callback_current_server == current_server)
  2379.         {
  2380.           argcount = 0;
  2381.           XtSetArg (args[argcount], XmNset, False);
  2382.           argcount++;
  2383.           XtSetValues (TOGGLE_BUTTONS_WIDGETS[new_mode], args, argcount);
  2384.  
  2385.         }
  2386.  
  2387.     }
  2388.       else if (toggle_button_current_server == current_server)
  2389.     {
  2390.       argcount = 0;
  2391.       XtSetArg (args[argcount], XmNset, False);
  2392.       argcount++;
  2393.       XtSetValues (TOGGLE_BUTTONS_WIDGETS[new_mode], args, argcount);
  2394.     }
  2395.  
  2396.  
  2397.       current_server -> SEPERATE_WINDOWS_LIST[new_mode].x =
  2398.     current_server -> SEPERATE_WINDOWS_LIST[new_mode].shell_widget -> core.x,
  2399.  
  2400.     current_server -> SEPERATE_WINDOWS_LIST[new_mode].y =
  2401.     current_server -> SEPERATE_WINDOWS_LIST[new_mode].shell_widget -> core.y;
  2402. /*
  2403.         SEPERATE_WINDOWS_LIST[new_mode].already_created = 0;
  2404.         fprintf (stdout,"In set_display_mode, setting already_created = 0\n");
  2405. */
  2406.  
  2407.       XtPopdown (current_server -> SEPERATE_WINDOWS_LIST[new_mode].shell_widget);
  2408.  
  2409.  
  2410.       XClearArea (display, window, 0, current_server -> DISPLAY_LIST[position].Y_offset,
  2411.           DrawAreaXYWH.width,
  2412.           DrawAreaXYWH.height - current_server -> DISPLAY_LIST[position].Y_offset,
  2413.           0);
  2414.  
  2415.       i = position;
  2416.  
  2417.  
  2418.       Y_remove = current_server -> DISPLAY_LIST[i].Y_length;
  2419.  
  2420.       while ((position < (Max_state_buttons - 1)) &&
  2421.          (i < current_server -> current_items))
  2422.  
  2423.     {
  2424.  
  2425.       current_server -> DISPLAY_LIST[i].button_num = current_server -> DISPLAY_LIST[i + 1].button_num;
  2426.       current_server -> DISPLAY_LIST[i].Y_offset = current_server -> DISPLAY_LIST[i + 1].Y_offset -
  2427.         Y_remove;
  2428. /* for BUTTON_ps_cpu, the lenght will change. but for all others, it will not */
  2429.  
  2430.       current_server -> DISPLAY_LIST[i].Y_length = current_server -> DISPLAY_LIST[i + 1].Y_length;
  2431.  
  2432.       i++;
  2433.  
  2434.     }
  2435.  
  2436.       current_server -> current_items--;
  2437.  
  2438.       current_server -> COMMAND_LIST[new_mode].on = 0;
  2439.  
  2440.       current_Y_offset = current_Y_offset -
  2441.     (FHEIGHT * current_server -> COMMAND_LIST[new_mode].Y_mult);
  2442.  
  2443.  
  2444.     }
  2445.   else
  2446.     {
  2447.  
  2448.       if ((new_mode == BUTTON_nfsstat) && (current_server -> nfs_available == 0))
  2449.     {
  2450.       display_network_msg (current_server, "NFS is not configured into the kernel");
  2451.       argcount = 0;
  2452.       XtSetArg (args[argcount], XmNset, False);
  2453.       argcount++;
  2454.       XtSetValues (TOGGLE_BUTTONS_WIDGETS[BUTTON_nfsstat], args,
  2455.                argcount);
  2456.  
  2457. /*
  2458.       disp_msg (colorDisplayMsg.pixel, "NFS is not configured into the kernel");
  2459. */
  2460.  
  2461. /*
  2462.    Since we are using MOTIF menu manager, we need to override the button press
  2463.    activation done when the button is pressed using the mouse....
  2464. */
  2465.  
  2466.       return;
  2467.     }
  2468.  
  2469.       if (new_mode > Max_sub_menu_buttons)
  2470.     fprintf (stdout, "INTERNAL error\n");
  2471.  
  2472. /*
  2473.   Turn on the button
  2474. */
  2475.  
  2476.  
  2477.       current_server -> TOGGLE_BUTTONS_STATE[new_mode] = 1;
  2478.  
  2479.       if (got_key_event)
  2480.     {
  2481.       if (input_callback_current_server == current_server)
  2482.         {
  2483.           argcount = 0;
  2484.           XtSetArg (args[argcount], XmNset, True);
  2485.           argcount++;
  2486.           XtSetValues (TOGGLE_BUTTONS_WIDGETS[new_mode], args, argcount);
  2487.  
  2488.         }
  2489.  
  2490.     }
  2491.       else if (toggle_button_current_server == current_server)
  2492.     {
  2493.       argcount = 0;
  2494.       XtSetArg (args[argcount], XmNset, True);
  2495.       argcount++;
  2496.       XtSetValues (TOGGLE_BUTTONS_WIDGETS[new_mode], args, argcount);
  2497.     }
  2498.       else if (inCommandLineOptionParse)
  2499.     {
  2500.       argcount = 0;
  2501.       XtSetArg (args[argcount], XmNset, True);
  2502.       argcount++;
  2503.       XtSetValues (TOGGLE_BUTTONS_WIDGETS[new_mode], args, argcount);
  2504.     }
  2505.  
  2506.  
  2507.  
  2508.       if (current_server -> SEPERATE_WINDOWS_LIST[new_mode].already_created == 1)
  2509.     {
  2510.       need_to_realize = 1;
  2511.     }
  2512.       else
  2513.     create_seperate_windows_widgets (new_mode);
  2514.  
  2515.       current_server -> current_items++;
  2516.       current_server -> DISPLAY_LIST[current_server -> current_items - 1].button_num = new_mode;
  2517.       current_server -> DISPLAY_LIST[current_server -> current_items - 1].Y_offset = current_Y_offset;
  2518.  
  2519.       if ((new_mode == BUTTON_ps_cpu) || (new_mode == BUTTON_ps_mem) ||
  2520.       (new_mode == BUTTON_ps_io))
  2521.     {
  2522.       current_server -> COMMAND_LIST[new_mode].Y_mult =    /* (FHEIGHT * 7) - */
  2523.         (DisplayHeight (display, screen) - current_Y_offset) / FHEIGHT;
  2524.  
  2525.     }
  2526.  
  2527.  
  2528.       current_server -> DISPLAY_LIST[current_server -> current_items - 1].Y_length =
  2529.     FHEIGHT * current_server -> COMMAND_LIST[new_mode].Y_mult;
  2530.  
  2531.       current_Y_offset = current_Y_offset +
  2532.     (FHEIGHT * current_server -> COMMAND_LIST[new_mode].Y_mult);
  2533.  
  2534.       current_server -> COMMAND_LIST[new_mode].on = 1;
  2535.  
  2536.       DrawAreaXYWH_bak = DrawAreaXYWH;
  2537.  
  2538.       if (need_to_realize == 1)
  2539.     {
  2540.  
  2541.       argcount = 0;
  2542.       XtSetArg (args[argcount], XmNx, current_server -> SEPERATE_WINDOWS_LIST[new_mode].x - 11);
  2543.       argcount++;
  2544.       XtSetArg (args[argcount], XmNy, current_server -> SEPERATE_WINDOWS_LIST[new_mode].y - 27);
  2545.       argcount++;
  2546.       XtSetValues (current_server -> SEPERATE_WINDOWS_LIST[new_mode].shell_widget,
  2547.                args, argcount);
  2548.  
  2549.  
  2550. /*
  2551.       my_size_hints = XAllocSizeHints ();
  2552.  
  2553.       my_size_hints -> x = SEPERATE_WINDOWS_LIST[new_mode].x - 11;
  2554.       my_size_hints -> y = SEPERATE_WINDOWS_LIST[new_mode].y - 27;
  2555.  
  2556.  
  2557.       XSetWMSizeHints (SEPERATE_WINDOWS_LIST[new_mode].display,
  2558.                SEPERATE_WINDOWS_LIST[new_mode].window,
  2559.                my_size_hints, USPosition);
  2560.  
  2561.       XSetWMSizeHints (SEPERATE_WINDOWS_LIST[new_mode].display,
  2562.                SEPERATE_WINDOWS_LIST[new_mode].window,
  2563.                my_size_hints, PPosition);
  2564. */
  2565.  
  2566.       XtPopup (current_server -> SEPERATE_WINDOWS_LIST[new_mode].shell_widget, XtGrabNone);
  2567.  
  2568.  
  2569. /*
  2570.  
  2571.       XtMoveWidget (SEPERATE_WINDOWS_LIST[new_mode].shell_widget,
  2572.             SEPERATE_WINDOWS_LIST[new_mode].x - 11,
  2573.             SEPERATE_WINDOWS_LIST[new_mode].y - 27);
  2574. */
  2575.  
  2576.  
  2577.     }
  2578.  
  2579.  
  2580.     }
  2581.  
  2582.  
  2583. /*
  2584.   XtRemoveTimeOut (timer_id);
  2585.   set_update_timer (current_server -> StatCycle_msec);
  2586. */
  2587.  
  2588.  
  2589.  
  2590. /*
  2591.   fprintf (stdout, "leaving set_display_mode\n");
  2592. */
  2593.  
  2594. }                /* end of set_display_mode */
  2595.  
  2596. /*+-------------------------------------------------------------------------
  2597.         draw_display(initial)
  2598. --------------------------------------------------------------------------*/
  2599. void
  2600. draw_display (initial, sep_window)
  2601.      int             initial;
  2602.      Window          sep_window;
  2603. {
  2604.  
  2605.   register int    i = 0;
  2606.  
  2607.  
  2608. /*
  2609.   If we have seperate windows and the main window needs updating, OR,
  2610.   If we are not seperate windows
  2611. */
  2612.  
  2613.  
  2614.   if (sep_window > 0)
  2615.     {
  2616.  
  2617.       if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].window)
  2618.     {
  2619.       draw_CpuScale_literals (current_server);
  2620.  
  2621.       XCopyArea (
  2622.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].display,
  2623.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].pixmap,
  2624.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].window,
  2625.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].gc, 0, 0,
  2626.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].width,
  2627.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].height,
  2628.               0, 0);
  2629.  
  2630.  
  2631.     }
  2632.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].window)
  2633.     {
  2634.       draw_WaitScale_literals (current_server);
  2635.       XCopyArea (
  2636.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].display,
  2637.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].pixmap,
  2638.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].window,
  2639.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].gc, 0, 0,
  2640.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].width,
  2641.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].height,
  2642.               0, 0);
  2643.     }
  2644.  
  2645.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_other].window)
  2646.     draw_OtherScale_literals (current_server);
  2647.  
  2648.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_mem].window)
  2649.     {
  2650.       draw_MemScale_literals (current_server);
  2651.     }
  2652.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].window)
  2653.     {
  2654.       draw_CacheScale_literals (current_server);
  2655.       XCopyArea (
  2656.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].display,
  2657.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].pixmap,
  2658.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].window,
  2659.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].gc, 0, 0,
  2660.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].width,
  2661.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].height,
  2662.               0, 0);
  2663.     }
  2664.  
  2665.  
  2666.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_streams].window)
  2667.     draw_streams_literals (current_server);
  2668.  
  2669.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_nfsstat].window)
  2670.     draw_nfsstat_literals (current_server);
  2671.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_sysinfo].window)
  2672.     draw_Sysinfo_literals (current_server);
  2673.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].window)
  2674.     {
  2675.       draw_lower_main_statics (current_server);
  2676.       XCopyArea (
  2677.        current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].display,
  2678.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].pixmap,
  2679.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].window,
  2680.       current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].gc, 0, 0,
  2681.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].width,
  2682.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].height,
  2683.               0, 0);
  2684.  
  2685.  
  2686.     }
  2687.       else if (sep_window == current_server -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].window)
  2688.     draw_dev_stats_literals (current_server);
  2689.  
  2690.     }
  2691.   else
  2692.     while (i < current_server -> current_items)
  2693.       {
  2694.  
  2695.  
  2696.     switch (current_server -> DISPLAY_LIST[i].button_num)
  2697.       {
  2698.  
  2699.       case BUTTON_cpu:
  2700.  
  2701.         draw_CpuScale_literals (current_server);
  2702.  
  2703.         XCopyArea (
  2704.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].display,
  2705.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].pixmap,
  2706.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].window,
  2707.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].gc, 0, 0,
  2708.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].width,
  2709.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cpu].height,
  2710.             0, 0);
  2711.  
  2712.  
  2713.         break;
  2714.       case BUTTON_wait:
  2715.         draw_WaitScale_literals (current_server);
  2716.         XCopyArea (
  2717.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].display,
  2718.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].pixmap,
  2719.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].window,
  2720.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].gc, 0, 0,
  2721.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].width,
  2722.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_wait].height,
  2723.             0, 0);
  2724.         break;
  2725.  
  2726.       case BUTTON_other:
  2727.         draw_OtherScale_literals (current_server);
  2728.  
  2729.         break;
  2730.       case BUTTON_mem:
  2731.  
  2732.         draw_MemScale_literals (current_server);
  2733.         break;
  2734.  
  2735.       case BUTTON_cache:
  2736.         draw_CacheScale_literals (current_server);
  2737.         XCopyArea (
  2738.           current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].display,
  2739.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].pixmap,
  2740.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].window,
  2741.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].gc, 0, 0,
  2742.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].width,
  2743.            current_server -> SEPERATE_WINDOWS_LIST[BUTTON_cache].height,
  2744.             0, 0);
  2745.  
  2746.         break;
  2747.  
  2748.       case BUTTON_streams:
  2749.         draw_streams_literals (current_server);
  2750.  
  2751.         break;
  2752.       case BUTTON_nfsstat:
  2753.         draw_nfsstat_literals (current_server);
  2754.         break;
  2755.  
  2756.       case BUTTON_sysinfo:
  2757.         draw_Sysinfo_literals (current_server);
  2758.  
  2759.         break;
  2760.       case BUTTON_tune_var:
  2761.         draw_lower_main_statics (current_server);
  2762.         XCopyArea (
  2763.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].display,
  2764.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].pixmap,
  2765.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].window,
  2766.             current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].gc, 0, 0,
  2767.          current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].width,
  2768.         current_server -> SEPERATE_WINDOWS_LIST[BUTTON_tune_var].height,
  2769.             0, 0);
  2770.  
  2771.  
  2772.         break;
  2773.       case BUTTON_dev_stats:
  2774.         draw_dev_stats_literals (current_server);
  2775.         break;
  2776.       case BUTTON_disk_space:
  2777.  
  2778.         break;
  2779.  
  2780.       }            /* End of case statement */
  2781.  
  2782.     i++;
  2783.  
  2784.       }                /* End of while loop */
  2785.  
  2786.  
  2787. }                /* end of draw_display */
  2788.  
  2789. /* end of update_and_draw.c */
  2790.